# Descriptive

parties <- c("<strong>CDU/CSU</strong>", "<strong>SPD</strong>", "<strong>Bündnis 90/Grüne</strong>")
p_party <- c(1/3,1/3,1/3)

# Gender: 

genders <- c("ist ein <strong>Mann</strong>", "ist eine <strong>Frau</strong>")
p_gender <- c(.5, .5)

# Ethnicity: 

# https://www.ethnicity-facts-figures.service.gov.uk/uk-population-by-ethnicity/national-and-regional-populations/population-of-england-and-wales/latest

ethnicities <- c("", "hat einen <strong>türkischen Migrationshintergrund</strong>", "hat einen <strong>polnischen Migrationshintergrund</strong>", "hat einen <strong>russischen Migrationshintergrund</strong>")
p_ethnicity <- c(.8, .2/3, .2/3, .2/3) 

# Class: 

class <- c("kommt aus der <strong>Arbeiterschicht</strong>", "kommt aus der <strong>Mittelschicht</strong>", "kommt aus der <strong>Oberschicht</strong>")
p_class <- c(1/3, 1/3, 1/3)

# Sexuality: https://www.ons.gov.uk/peoplepopulationandcommunity/culturalidentity/sexuality/bulletins/sexualidentityuk/2017 (combining Lesbian/Gay/Bisexual)

sexuality <- c("ist <strong>heterosexuell</strong>", "ist <strong>homosexuell</strong>")
p_sexuality <- c(.9, .1) 

characteristics <- c("gender", "ethnicity", "sexuality", "class")

surrogation_masculine <-
  c(
    "der PARTY-Bundestagsabgeordnete (Direktmandat) <strong>für Ihren Wahlkreis</strong>.", # Male
    "ein PARTY-Bundestagsabgeordneter (Direktmandat) <strong>für einen anderen Wahlkreis in Ihrem Bundesland</strong>.", # Male
    "ein PARTY-Bundestagsabgeordneter (Direktmandat) <strong>für einen anderen Wahlkreis in einem anderen Bundesland</strong>.", # Male
    "ein PARTY-Bundestagsabgeordneter (Listenmandat) <strong>für Ihr Bundesland</strong>.", # Male
    "ein PARTY-Bundestagsabgeordneter (Listenmandat) <strong>für ein anderes Bundesland</strong>." # Male
  )

surrogation_feminine <-
  c(
    "die PARTY-Bundestagsabgeordnete (Direktmandat) <strong>für Ihren Wahlkreis</strong>.", # Female
    "eine PARTY-Bundestagsabgeordnete (Direktmandat) <strong>für einen anderen Wahlkreis in Ihrem Bundesland</strong>.", # Female
    "eine PARTY-Bundestagsabgeordnete (Direktmandat) <strong>für einen anderen Wahlkreis in einem anderen Bundesland</strong>.", # Female
    "eine PARTY-Bundestagsabgeordnete (Listenmandat) <strong>für Ihr Bundesland</strong>.", # Female
    "eine PARTY-Bundestagsabgeordnete (Listenmandat) <strong>für ein anderes Bundesland</strong>." # Female
  )


justification_masculine <-
  c(
    "betont in der Regel die Vorteile seiner politischen Positionen für <strong>Menschen wie Sie</strong>.", # Male
    "betont in der Regel die Vorteile seiner politischen Positionen für <strong>die gesamte Gesellschaft</strong>.", # Male
    "erklärt in der Regel, wie sich seine Politik auf <strong>Menschen wie Sie</strong> auswirkt.", # Male
    "erklärt in der Regel, wie sich seine Politik auf <strong>die gesamte Gesellschaft</strong> auswirkt.", # Male
    "rechtfertigt seine Entscheidungen regelmäßig damit, was für <strong>bestimmte Gruppen</strong> in der Gesellschaft gut ist.", # Male
    "rechtfertigt seine Entscheidungen regelmäßig damit, was für <strong>ganz Deutschland</strong> gut ist.", # Male
    "erklärt in der Regel, wie seine Entscheidungen <strong>den Interessen von Menschen wie Ihnen</strong> dienen.", # Male
    "erklärt in der Regel, wie seine Entscheidungen <strong>den nationalen Interessen</strong> dienen." # Male
  )
    
justification_feminine <-
  c(
    "betont in der Regel die Vorteile ihrer politischen Positionen für <strong>Menschen wie Sie</strong>.", # Female
    "betont in der Regel die Vorteile ihrer politischen Positionen für <strong>die gesamte Gesellschaft</strong>.", # Female
    "erklärt in der Regel, wie sich ihre Politik auf <strong>Menschen wie Sie</strong> auswirkt.", # Female
    "erklärt in der Regel, wie sich ihre Politik auf <strong>die gesamte Gesellschaft</strong> auswirkt.", # Female
    "rechtfertigt ihre Entscheidungen regelmäßig damit, was für <strong>bestimmte Gruppen</strong> in der Gesellschaft gut ist.", # Female
    "rechtfertigt ihre Entscheidungen regelmäßig damit, was für <strong>ganz Deutschland</strong> gut ist.", # Female
    "erklärt in der Regel, wie ihre Entscheidungen <strong>den Interessen von Menschen wie Ihnen</strong> dienen.", # Female
    "erklärt in der Regel, wie ihre Entscheidungen <strong>den nationalen Interessen</strong> dienen." # Female
  )

substantive <-
  c(
    "die Abschaffung des Werbeverbots für Schwangerschaftsabbrüche",
    "die Einführung strengerer Maßnahmen zur Reduzierung der Einwanderung",
    "die Erhöhung des Steuersatzes auf Einkommen über 55.961 Euro auf 45%",
    "die Erhöhung von Hartz IV",
    "den Bau von Nord Stream 2",
    "die Erhöhung der Luftfahrtssteuer"
  )

responsiveness <-
  c(
    '„Ich <strong>höre</strong> mir immer <strong>die Meinung meiner Wähler an</strong>, denn am Ende entscheiden sie, ob ich wiedergewählt werde oder nicht.“',
    '„Wahlen sind wichtig, weil sie mich als Politiker veranlassen, <strong>auf die Wähler zu hören und auf sie einzugehen</strong>.“',
    '„In einer Demokratie hat der Wähler das letzte Wort, deshalb versuche ich immer, <strong>auf die Wünsche der Wähler einzugehen</strong>.“',
    '„Ich kann die Gesellschaft nur verändern, wenn ich wiedergewählt werde. Deshalb stelle ich immer sicher, <strong>mich um die größten Sorgen der Wähler zu kümmern</strong>.“',
    '„Ich bin nicht in die Politik gegangen, um Wahlen zu gewinnen, sondern <strong>um dieses Land zum Besseren zu verändern</strong>.“',
    '„Ich möchte nicht einfach dem Wählerwillen folgen, um wiedergewählt zu werden, sondern <strong>für meine Prinzipien und Werte einstehen</strong>.“',
    '"Wenn ich <strong>eine Wahl verliere</strong>, weil ich das Richtige getan habe, dann <strong>sei es drum</strong>.“',
    '„Ich bin in die Politik gegangen, <strong>um gute Ideen zu verwirklichen, nicht bloß populäre Ideen,</strong> mit denen man Wahlen gewinnt.“'
  )

personalization_masculine <-
  c(
    "kritisiert und stimmt <strong>häufig gegen die Parteiführung und ihre Vorgaben</strong>.",
    "kritisiert und stimmt <strong>selten gegen die Parteiführung und ihre Vorgaben</strong>.",
    "<strong>stimmt in der Regel nach den Vorgaben der Partei ab</strong>, selbst wenn dies mit den Wünschen seiner Wähler schwer vereinbar ist.", # male
    "stimmt in der Regel nach den Wünschen seiner Wähler ab, <strong>selbst wenn dies gegen die Vorgaben der Partei verstößt</strong>.", # male
    "<strong>stimmt in der Regel nach den Vorgaben der Partei ab</strong>, selbst wenn dies mit den eigenen Überzeugungen schwer vereinbar ist.",
    "stimmt in der Regel nach eigener Überzeugung ab, <strong>selbst wenn dies gegen die Vorgaben der Partei verstößt</strong>."
  )

personalization_feminine <-
  c(
    "kritisiert und stimmt <strong>häufig gegen die Parteiführung und ihre Vorgaben</strong>.",
    "kritisiert und stimmt <strong>selten gegen die Parteiführung und ihre Vorgaben</strong>.",
    "<strong>stimmt in der Regel nach den Vorgaben der Partei ab</strong>, selbst wenn dies mit den Wünschen ihrer Wähler schwer vereinbar ist.", # female
    "stimmt in der Regel nach den Wünschen ihrer Wähler ab, <strong>selbst wenn dies gegen die Vorgaben der Partei verstößt</strong>.", # female
    "<strong>stimmt in der Regel nach den Vorgaben der Partei ab</strong>, selbst wenn dies mit den eigenen Überzeugungen schwer vereinbar ist.",
    "stimmt in der Regel nach eigener Überzeugung ab, <strong>selbst wenn dies gegen die Vorgaben der Partei verstößt</strong>."
  )

get_mp_pair_vingette <- function(row_order){
  
  # Sample party
  party_tmp <- sample(parties, 2, replace = T, prob = p_party)
  
  # Sample descriptive characteristics
  gender_tmp <- sample(genders, 2, replace = T, prob = p_gender)
  ethnicity_tmp <- sample(ethnicities, 2, replace = T, prob = p_ethnicity)
  sexuality_tmp <- sample(sexuality, 2, replace = T, prob = p_sexuality)
  class_tmp <- sample(class, 2, replace = T, prob = p_class)
  
  # Sample characteristics to include in choice task
  desc_chars_in_task <- data.frame(gender_tmp, data.frame(ethnicity_tmp, sexuality_tmp, class_tmp)[,sample(1:3,1, replace = FALSE)])
  
  descriptive_1_tmp <- desc_chars_in_task[,1]
  descriptive_2_tmp <- desc_chars_in_task[,2]
  
  # Sample personalization, conditional on gender
  personalization_tmp_1 <- ifelse(gender_tmp[1] == "ist ein <strong>Mann</strong>", sample(personalization_masculine, 1, replace = T), sample(personalization_feminine, 1, replace = T))
  personalization_tmp_2 <- ifelse(gender_tmp[2] == "ist ein <strong>Mann</strong>", sample(personalization_masculine, 1, replace = T), sample(personalization_feminine, 1, replace = T))
    
  personalization_tmp <- c(personalization_tmp_1, personalization_tmp_2)
  
  # Sample surrogation, conditional on gender
  surrogation_tmp_1 <- ifelse(gender_tmp[1] == "ist ein <strong>Mann</strong>", sample(surrogation_masculine, 1, replace = T), sample(surrogation_feminine, 1, replace = T))
  surrogation_tmp_2 <- ifelse(gender_tmp[2] == "ist ein <strong>Mann</strong>", sample(surrogation_masculine, 1, replace = T), sample(surrogation_feminine, 1, replace = T))
  
  surrogation_tmp_1 <- gsub("PARTY", party_tmp[1], surrogation_tmp_1)
  surrogation_tmp_2 <- gsub("PARTY", party_tmp[2], surrogation_tmp_2)
  
  surrogation_tmp <- c(surrogation_tmp_1, surrogation_tmp_2)
  
  
  # Sample substantive issue
  substantive_tmp <- sample(substantive, 1, replace = T)
  
  # Sample substantive issue position
  substantive_pos_tmp <- sample(c("befürwortet", "lehnt ab"), 2, replace = T)
  substantive_tmp <- ifelse(substantive_pos_tmp == "befürwortet", paste0("<strong>befürwortet</strong> ", substantive_tmp,"."), paste0("<strong>lehnt</strong> ", substantive_tmp, " <strong>ab</strong>."))
  
  # Sample responsiveness
  responsiveness_tmp <- sample(responsiveness, 2, replace = T)
  
  # Sample justification
  # Sample justification, conditional on gender
  justification_tmp_1 <- ifelse(gender_tmp[1] == "ist <strong>ein Mann</strong>", sample(justification_masculine, 1, replace = T), sample(justification_feminine, 1, replace = T))
  justification_tmp_2 <- ifelse(gender_tmp[2] == "ist <strong>ein Mann</strong>", sample(justification_masculine, 1, replace = T), sample(justification_feminine, 1, replace = T))
  
  justification_tmp <- c(justification_tmp_1, justification_tmp_2)
  
  # Construct sentences
  #sentence_one <- paste0("Abgeordneter ",1:2,"...")
  sentence_one <- paste0("Politiker ",1:2,"...")

  descriptive_sentence_1 <- ifelse(descriptive_1_tmp[1] != "" & descriptive_2_tmp[1] !="", paste0("...", descriptive_1_tmp[1], " und ", descriptive_2_tmp[1], "."), paste0("...", descriptive_1_tmp[1], descriptive_2_tmp[1], "."))  
  descriptive_sentence_2 <- ifelse(descriptive_1_tmp[2] != "" & descriptive_2_tmp[2] !="", paste0("...", descriptive_1_tmp[2], " und ", descriptive_2_tmp[2], "."), paste0("...", descriptive_1_tmp[2], descriptive_2_tmp[2], "."))
  
  descriptive_sentence <- c(descriptive_sentence_1, descriptive_sentence_2)
  
  surrogation_sentence <- paste0("...ist ", surrogation_tmp)
  
  justification_sentence <- paste0("...", justification_tmp)
  
  substantive_sentence <- paste0("...", substantive_tmp)
  
  responsiveness_sentence <- paste0("...sagte kürzlich in einem Interview: ", responsiveness_tmp)
  
  personalization_sentence <- paste0("...", personalization_tmp)
  
  mp_one <- c(sentence_one[1], descriptive_sentence[1], surrogation_sentence[1], justification_sentence[1], responsiveness_sentence[1], personalization_sentence[1], substantive_sentence[1])
  
  mp_two <- c(sentence_one[2], descriptive_sentence[2], surrogation_sentence[2], justification_sentence[2], responsiveness_sentence[2], personalization_sentence[2], substantive_sentence[2])
  
  mp_one <- mp_one[c(1, row_order)]
  mp_two <- mp_two[c(1, row_order)]
  
  out <- c(mp_one, mp_two)
  
  names(out) <- c("mp_1_sentence_1",
                  "mp_1_sentence_2",
                  "mp_1_sentence_3",
                  "mp_1_sentence_4",
                  "mp_1_sentence_5",
                  "mp_1_sentence_6",
                  "mp_1_sentence_7",
                  "mp_2_sentence_1",
                  "mp_2_sentence_2",
                  "mp_2_sentence_3",
                  "mp_2_sentence_4",
                  "mp_2_sentence_5",
                  "mp_2_sentence_6",
                  "mp_2_sentence_7")
  
  as.list(out)
  
}


#* Echo back the input
#* #* @serializer json
#* @get /test
function() {
  
  rows <- sample(2:7)
  
  out1 <- get_mp_pair_vingette(row_order = rows)
  out2 <- get_mp_pair_vingette(row_order = rows)
  out3 <- get_mp_pair_vingette(row_order = rows)
  out4 <- get_mp_pair_vingette(row_order = rows)
  out5 <- get_mp_pair_vingette(row_order = rows)
  
  names(out1) <- paste0(names(out1), "_1")
  names(out2) <- paste0(names(out2), "_2")
  names(out3) <- paste0(names(out3), "_3")
  names(out4) <- paste0(names(out4), "_4")
  names(out5) <- paste0(names(out5), "_5")
  
  out <- c(out1, out2, out3, out4, out5)
  
  out 
  
}


